Reducing the overhead of dynamic compilation
نویسندگان
چکیده
The execution model for mobile, dynamically-linked, object–oriented programs has evolved from fast interpretation to a mix of interpreted and dynamically compiled execution. The primary motivation for dynamic compilation is that compiled code executes significantly faster than interpreted code. However, dynamic compilation, which is performed while the application is running, introduces execution delay. In this paper we present two dynamic compilation techniques that enable high performance execution while reducing the effect of this compilation overhead. These techniques can be classified as: 1) decreasing the amount of compilation performed (Lazy Compilation), and 2) overlapping compilation with execution (Background Compilation). We first evaluate a Lazy Compilation approach in which individual methods are compiled on-demand upon their first invocation. This is in contrast to Eager Compilation, in which all methods in a class are compiled when a new class is loaded. Most dynamic compilation systems use lazy compilation but have not provided an empirical study to support this choice. In this work, we describe our experience with eager compilation, as well as the implementation and transition to lazy compilation. We empirically detail the effectiveness of this decision. Our experimental results (obtained by executing the SpecJVM Java programs on the Jalapeño JVM) show that, compared to eager compilation, lazy compilation results in % fewer methods being compiled and reductions in total time (compilation plus execution time) of % to %. Next, we present profile-driven, background compilation, a technique that augments lazy compilation by using idle cycles in multiprocessor systems to overlap compilation with application execution. Profile information is used to prioritize methods as candidates for background compilation. Our results indicate that background compilation can achieve performance of off-line compiled applications and masks almost all compilation overhead. We show significant reductions in total time ( % to %), over eager compilation.
منابع مشابه
An Empirical Study of Method In-lining for a Java Just-in-Time Compiler
Method inlining is one of the optimizations that have a significant impact on both system performance and total compilation overhead in a dynamic compilation system. This paper describes an empirical study of onlineprofile-directed method inlining for obtaining both performance benefits and compilation time reductions in our dynamic compilation system. We rely solely on the profile information ...
متن کاملEfficiently Verifiable Escape Analysis
Escape analysis facilitates better optimization of programs in object-oriented programming languages such as Java, significantly reducing memory management and synchronization overhead. Unfortunately, existing escape analysis algorithms are often too expensive to be applicable in just-in-time compilation contexts. We propose to perform the analysis ahead of time and ship its results as code ann...
متن کاملReducing Compilation Time Overhead in Compiled Simulators
Compiled simulation is a well known technique for improving the performance of instruction set simulators at the cost of compilation time. However the compilation time overhead makes such usage of compiler optimizations impractical especially for large applications. In this paper, we propose a hybrid compiled simulation approach that is simple, generates an optimized decoder and has almost no c...
متن کاملDesign, Implementation, and Evaluation of a Compilation Server ; CU-CS-978-04
Modern JVM implementations interleave execution with compilation of " hot " methods to achieve reasonable performance. Since compilation overhead impacts the execution time of the application and induces run-time pauses, we explore offloading compilation onto a compilation server. In this paper, we present the design, implementation , and evaluation of compilation server which compiles and opti...
متن کاملEfficient Evaluation for Untyped and Compositional Representations of Expressions
This report gives a simple implementation of A. Baars and S.D. Swierstra’s “Typing Dynamic Typing” [5] using modern (GHC) Haskell features, and shows that the technique is especially beneficial in a compositional setting, where parts of the expression are defined separately. Evaluating expressions that are represented as algebraic data types typically requires using tagged unions to represent v...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید
ثبت ناماگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید
ورودعنوان ژورنال:
- Softw., Pract. Exper.
دوره 31 شماره
صفحات -
تاریخ انتشار 2001